package main

import "fmt"

// 接口 == nil：当其的动态类型为 nil 动态值 unset

// 接口值和非接口值比较时，会先把非接口值转化为接口值，再进行比较
func main() {

	var p *int = nil
	var i interface{} = p
	fmt.Println(i == p)   // true | p转化为接口为 (*int, nil) 和 i 是相等的
	fmt.Println(p == nil) // true | p不是接口类型，可以直接比较
	println(p)            // 0x0
	fmt.Println(i == nil) // i 的动态类型为 *int, 动态值 为 nil | i 和 nil 比较， 会把 nil 转为 接口 (0x0,0x0)
	println(i)            // (0x102274680,0x0)
}
